// 1. 引入express
let express = require('express');
// 2. 创建应用对象
let app = express();
// 3. 创建路由规则

// jquery服务器
app.all('/jquery', (request, response)=>{
    // 设置响应头 允许跨域
    response.setHeader("Access-Control-Allow-Origin", "*");
    let data = {name:'尚硅谷'};
    setTimeout(function(){
        response.send(JSON.stringify(data));
    },3000);
}); 

// axios服务器
app.all('/axios', (request, response)=>{
    // 设置响应头 允许跨域
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.send('hello axios');
});

// fetch服务器
app.all('/fetch', (request, response)=>{
    // 设置响应头 允许跨域
    response.setHeader("Access-Control-Allow-Origin", "*");
    const str = {text:'hello fetch'};
    response.send(JSON.stringify(str));
}); 

// jsonp服务器
app.get('/jsonp', (request, respond)=>{
    const obj = {name:'atguigu'};
    // 将data数据转化为字符串
    const data = JSON.stringify(obj.name);
    respond.send(`handle(${data})`);
    // 相当于如下代码
    // respond.send("handle("+data+")");
})

// 检查用户名是否存在
app.get('/check-username', (request, respond)=>{
    const obj = {name:'atguigu',msg:'用户名已经存在'};
    // 将data数据转化为字符串
    const data = JSON.stringify(obj);
    respond.send(`handle(${data})`);
})

// jquery发送jsonp请求
app.get('/jquery-jsonp', (request, respond)=>{
    const obj = {
        name:'atguigu',
        city:['上海','北京','天津'],
    };
    let cb = request.query.callback;
    // 将data数据转化为字符串
    const data = JSON.stringify(obj);
    respond.send(`${cb}(${data})`);
})

// 设置cors响应头实现跨域
app.all('/cors', (request, response)=>{
    // 设置响应头,从而允许跨域
    // response.setHeader("Access-Control-Allow-Origin", "*");
    response.send('atgugui');
}); 

// 4. 监听端口启动服务
app.listen(8000,()=>{
    console.log('服务已经启动，8000端口监听中...');
});